﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using control.Biz;

namespace TrangSucShop.usercontrol
{
    public partial class cart : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["KhachHang"] != null)
            {
                btCheckout.CausesValidation = false;
            }
            if (!IsPostBack)
            {
                BizDonHang cart = (BizDonHang)Session["cart"];
                if (cart.Items.Count == 0)
                {
                    lbThongBao.Text = "Không có sản phẩm trong giỏ hàng";
                    btCheckout.Enabled = false;
                }
                else
                {
                    GridView1.DataSource = cart.Items;
                    GridView1.DataBind();
                    //GridView1.FooterRow.Cells[5].Text = cart.TongTien();
                }
            }
        }
        public string lblThanhTienValue()
        {
            BizDonHang cart = (BizDonHang)Session["cart"];
            return cart.TongTien.ToString();
        }
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            BizDonHang cart = (BizDonHang)Session["cart"];
            int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
            int indexItem = cart.FindIndexItem(ID);
            cart.Items.RemoveAt(indexItem);
            Session["cart"] = cart;
            GridView1.DataSource = cart.Items;
            GridView1.DataBind();
            GridView1.FooterRow.Cells[5].Text = cart.TongTien.ToString();
            if (cart.Items.Count == 0)
            {
                lbThongBao.Text = "Không có sản phẩm trong giỏ hàng";
                btCheckout.Enabled = false;
            }


        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            BizDonHang cart = (BizDonHang)Session["cart"];
            int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
            int newSoluong = 0;
            try 
            { 
                newSoluong = Convert.ToInt32(((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtSoLuong")).Text);
                if (newSoluong > 3 || newSoluong <1)
                {
                    newSoluong = 1;
                    lbThongBao.Text = "chỉ có thể đặt 1 - 3 sản phẩm";
                }
            }
            catch { }
            
            int indexItem = cart.FindIndexItem(ID);
            if (cart.Items[indexItem].SanPham.SoLuong < newSoluong)
            {
                newSoluong = 1;
                lbThongBao.Text = "Số lương tồn kho không đủ, xin hãy kiểm tra lại phiếu mua hàng"; 
            }
            cart.Items[indexItem].SoLuong = newSoluong;
            Session["cart"] = cart;
            GridView1.EditIndex = -1;
            GridView1.DataSource = cart.Items;
            GridView1.DataBind();
            GridView1.FooterRow.Cells[5].Text = cart.TongTien.ToString() ;
        }
        protected void btContinue_Click(object sender, EventArgs e)
        {
            Response.Redirect("Default.aspx");
        }
        protected void btCheckout_Click(object sender, EventArgs e)
        {
            if (Session["KhachHang"] == null)
            {
                
                lbThongBao.Text = "bạn phải đăng nhập hoặc điền thông tin trước khi mua";
                if (pn1.Visible == true)
                {
                    BizDonHang cart = (BizDonHang)Session["cart"];
                    if (KiemTraSoLuong(cart) == true)
                        lbThongBao.Text = "Số lương tồn kho không đủ, xin hãy kiểm tra lại phiếu mua hàng"; 
                    else
                    {
                        string sotk = TextBox1.Text;
                        BizTaiKhoan taikhoan = BizTaiKhoan.GetBySoTk(sotk);
                        if (taikhoan!=null)
                        {
                            if (taikhoan.TaiKhoan >= cart.TongTien)
                            {
                                cart.SoTaiKhoan = taikhoan.SoTK;
                                cart.HoTen = TextBox3.Text;
                                cart.Email = TextBox4.Text;
                                cart.SoDienThoai = TextBox6.Text;
                                DateTime begintime = new DateTime(2011, 11, 11);
                                long ticktime = DateTime.Now.Ticks - begintime.Ticks;
                                TimeSpan _timeSpan = new TimeSpan(ticktime);
                                string maPX = "PXH" + _timeSpan.TotalSeconds.ToString();
                                cart.Ma = maPX;
                                cart.ThoiGian = DateTime.Now;
                                cart.Insert();
                                if (cart.ID != -1)
                                {
                                    lbThongBao.Text = "Thanh toán thành công";
                                    btCheckout.Enabled = false;
                                    cart = new BizDonHang();
                                    Session["cart"] = cart;
                                }
                                else
                                    lbThongBao.Text = "Việc mua không  thực hiên được";
                                GridView1.DataSource = cart.Items;
                                GridView1.DataBind();
                                GridView1.FooterRow.Cells[5].Text = cart.TongTien.ToString();
                            }
                            else { lbThongBao.Text = " số tiền không đủ "; }
                        }
                        else
                        {
                            lbThongBao.Text = "Số tài khoản không phù hợp";
                        }
                    }
                }
                btCheckout.CausesValidation = true;
                pn1.Visible = true;
                
            }
            else
            {
                BizKhachHang kh = (BizKhachHang)Session["KhachHang"];
                BizDonHang cart = (BizDonHang)Session["cart"];
                if (KiemTraSoLuong(cart) == true)
                    lbThongBao.Text = "Số lương tồn kho không đủ, xin hãy kiểm tra lại phiếu mua hàng";
                else
                {
                     cart.SoTaiKhoan = kh.TaiKhoan;
                     BizTaiKhoan taikhoan = BizTaiKhoan.GetBySoTk(cart.SoTaiKhoan);
                     if (taikhoan!=null)
                     {
                         if (taikhoan.TaiKhoan >= cart.TongTien)
                         {
                            cart.HoTen = kh.TenKhachHang;
                            cart.Email = kh.Email;
                            cart.SoDienThoai = kh.SoDienThoai;
                            DateTime begintime = new DateTime(2011, 11, 11);
                            long ticktime = DateTime.Now.Ticks - begintime.Ticks;
                            TimeSpan _timeSpan = new TimeSpan(ticktime);
                            string maPX = "PXH" + _timeSpan.TotalSeconds.ToString();
                            cart.Ma = maPX;
                            cart.ThoiGian = DateTime.Now;
                            cart.Insert();
                            if (cart.ID != -1)
                            {
                                lbThongBao.Text = "Thanh toán thành công";
                                btCheckout.Enabled = false;
                                cart = new BizDonHang();
                                Session["cart"] = cart;
                            }
                            else
                                lbThongBao.Text = "Việc mua không  thực hiên được";
                            GridView1.DataSource = cart.Items;
                            GridView1.DataBind();
                            GridView1.FooterRow.Cells[5].Text = cart.TongTien.ToString();
                         }
                         else { lbThongBao.Text = " số tiền không đủ "; }
                     }
                     else
                     {
                        lbThongBao.Text = "Số tài khoản không phù hợp";
                     }
                }
            }
        }

        private bool KTsotk(string sotk)
        {
            return BizDonHang.KiemTraSotk(sotk);
        }

        private static bool KiemTraSoLuong(BizDonHang cart)
        {
            foreach (BizChiTietDonHang item in cart.Items)
            {
                if (item.SoLuong > item.TonKho)
                    return true;
            }
            return false;
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BizDonHang cart = (BizDonHang)Session["cart"];
            GridView1.DataSource = cart.Items;
            GridView1.DataBind();
            GridView1.FooterRow.Cells[5].Text = cart.TongTien.ToString();
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            BizDonHang cart = (BizDonHang)Session["cart"];
            GridView1.DataSource = cart.Items;
            GridView1.DataBind();
            GridView1.FooterRow.Cells[5].Text = cart.TongTien.ToString();
        }
    }
}